#ifndef WINDOWS_MAINFRAME_HEADER
#define WINDOWS_MAINFRAME_HEADER

#include <windows.h>
#include <gdiplus.h>

#include "InterAct/File/Directory.hpp"
#include "InterAct/Window/WindowFrame.hpp"
#include "InterAct/Control/Button.hpp"
#include "InterAct/Security/AccessToken.hpp"

class Windows_MainFrame : public Agx::WindowFrame {
    private:
        enum BUTTON_ID {
            RUN     = 0x0000010,
            RUN2    = 0x0000020,
            CLOSE   = 0x0000030
        };

        Gdiplus::GdiplusStartupInput mGdi_Startup_Input;
        ULONG_PTR mGdi_Token;

        Agx::Directory d;
        Agx::AccessToken acct;
        
    private:
        LRESULT CALLBACK Window_Procedure(HWND pHwnd, UINT pMsg, WPARAM pWParam, LPARAM pLParam) override;
        LRESULT CALLBACK Window_Procedure_Destroy(HWND pHwnd, UINT pMsg, WPARAM pWParam, LPARAM pLParam) override;
        LRESULT CALLBACK Window_Procedure_Command(HWND pHwnd, UINT pMsg, WPARAM pWParam, LPARAM pLParam) override;

    public:
        Windows_MainFrame();
        ~Windows_MainFrame();

        int run(HINSTANCE pInstance, HINSTANCE pPreviousInstance, PSTR pCmdLine, INT pCmdShow) override;
};

#endif